import store from '../store'
import appConfig from "../../api/appConfig";

const DEBUGGER = appConfig.system.DEBUGGER

const { body } = document
const WIDTH = 992 // refer to Bootstrap's responsive design

export default {
    watch: {
        $route(route) {
            if (this.device === 'mobile' && this.sidebar.opened) {
                store.dispatch('app/closeSideBar', { withoutAnimation: false })
            }
        }
    },
    beforeMount() {
        window.addEventListener('resize', this.$_resizeHandler)
    },
    beforeDestroy() {
        window.removeEventListener('resize', this.$_resizeHandler)
    },
    mounted() {
        const isMobile = this.$_isMobile()
        if (isMobile) {
            store.dispatch('app/toggleDevice', 'mobile')
            store.dispatch('app/closeSideBar', { withoutAnimation: true })
        }
    },
    methods: {
        // use $_ for mixins properties
        // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
        $_isMobile() {
            const rect = body.getBoundingClientRect()
            let winSize = {
                height: rect.height,
                width: rect.width
            }
            store.dispatch('app/setWinSize', winSize)
            if (DEBUGGER){
                console.log('当前窗体宽度为', rect.width, '窗体高度为', rect.height)
            }
            return rect.width - 1 < WIDTH
        },
        $_resizeHandler() {
            if (!document.hidden) {
                const isMobile = this.$_isMobile()
                if (DEBUGGER){
                    console.log('平台(是否为手机)回调计算结果', isMobile)
                }
                store.dispatch('app/toggleDevice', isMobile ? 'mobile' : 'desktop')

                if (isMobile) {
                    store.dispatch('app/closeSideBar', { withoutAnimation: true })
                }
            }
        }
    }
}

